package com.macro.mall.service;

import com.macro.mall.dto.admin.*;
import com.macro.mall.vo.admin.*;

import java.util.List;

/**
 * @author xq
 * @description SitQuietlyClockService
 * @date 2024/2/20 20:48
 */
public interface SitQuietlyClockService {

    /**
     * 新增打卡或请假
     * @param req
     */
    void addClock(AdminClockAddDTO req);


    /**
     * 修改 打卡或请假
     * @param req
     */
    void updateClock(AdminClockUpdateDTO req);

    /**
     * 删除记录
     * @param id
     */
    void deleteClock(Long id);

    /**
     * 打卡列表查询
     *
     * @param req
     * @return
     */
    List<AdminSitQuietlyClockVO> list(AdminClockQueryDTO req);

    /**
     * 已旷卡列表查询
     *
     * @param req
     * @return
     */
    List<AdminUnClockListVO> unClockList(AdminUnClockListDTO req);


    /**
     * 待打卡列表查询
     * @param req
     * @return
     */
    List<String> preClockList(AdminPreClockDTO req);

    /**
     * 处理到第二天还没打卡记录
     */
    void processUnClockTask();

    /**
     * 待打卡统计数据列表查询
     * @param req
     * @return
     */
    AdminPreClockDataVO preClockDataVO(AdminPreClockDTO req);


    /**
     * 获取不同班级用户列表
     * @param type
     * @return
     */
    List<AdminUserNameVO> listUserNames(Integer type);


    /**
     * 获取当前本月旷卡人数 大于2次
     * @param type
     * @return
     */
    List<UnClockUserVO> listUnClock(Integer type);

}
